package com.zclcs.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zclcs.model.Menu;
import com.zclcs.model.User;

/**
 * 用户表数据层
 * 
 * @author 周成龙
 *
 */
public interface UserMapper extends BaseMapper<User> {

	/**
	 * 查询用户权限标识
	 * 
	 * @param user
	 * @return
	 */
	String[] selectUserRoles(User user);

	/**
	 * 查询用户菜单(通过id)
	 * 
	 * @param user
	 * @return
	 */
	List<Menu> selectMenus(User user);

	/**
	 * 查询用户菜单(通过parentId)
	 * 
	 * @param user
	 * @return
	 */
	List<Menu> selectChildrenMenus(User user);

	/**
	 * 查询该菜单是否存在子菜单
	 * 
	 * @param user
	 * @return
	 */
	Integer selectHasChildrenMenus(User user);

	/**
	 * 查询该菜单的所有子菜单的权限
	 * 
	 * @param user
	 * @return
	 */
	String[] selectChildrenRoles(User user);

	/**
	 * 查询自己的权限
	 * 
	 * @param user
	 * @return
	 */
	String selectOwnerRole(User user);

	/**
	 * 查询是否系统用户
	 * 
	 * @param entityWrapper
	 * @return
	 */
	Integer selectIsAdmin(@Param("ew") QueryWrapper<User> entityWrapper);

	/**
	 * 查询系统用户名称
	 * 
	 * @param entityWrapper
	 * @return
	 */
	String[] selectAdminUser(@Param("ew") QueryWrapper<User> entityWrapper);

	/**
	 * 查询系统管理员权限标识
	 * 
	 * @param user
	 * @return
	 */
	String[] selectAdminRoles();

	/**
	 * 查询系统管理员菜单
	 * 
	 * @param user
	 * @return
	 */
	List<Menu> selectAdminMenus();

	/**
	 * 查询系统菜单(通过parentId)
	 * 
	 * @param user
	 * @return
	 */
	List<Menu> selectAdminChildrenMenus(User user);

}
